#ifndef float4_h__
#define float4_h__

#include "vtypes.h"

class float4 {
public:
  float4(float*);
  float4(const float4&);
  float4(float, float, float, float);

  float4& operator=(const float4&);

  bool operator==(const float4&);

  float4 add(const float4& add) const;
  float4 sub(const float4& subtract) const;
  float4 mul(const float4& multiply) const;
  float4 madd(const float4& multiply, const float4& add) const;
  float4 msub(const float4& multiply, const float4& subtract) const;

  float4 recip() const;

private:
  float4_storage_t data;
};


#if defined INTEL_SSE
  #include "sse/float4_impl.h"
#else
  #include "default/float4_impl.h"
#endif

#endif // float4_h__